import com.xauat.Product;
import com.xauat.Transaction;
import com.xauat.User;
import com.xauat.pagetype.CouponType;
import com.xauat.pagetype.OrderType;
import com.xauat.pagetype.PointsType;
import com.xauat.pagetype.ShopType;
import com.xauat.payment.BalancePayment;
import com.xauat.payment.CashPayment;
import com.xauat.payment.CouponPayment;
import com.xauat.payment.PointsPayment;

import java.util.ArrayList;
import java.util.List;

public class Main {

    //需要实现
    // 小明在 点餐页面  使用 余额 购买了 两套摄影套餐，花费30块，
    //小红在 商城页面 使用 现金 购买了一袋猫粮，现结50块，
    //小花在 积分兑换页面  使用 积分 兑换了 一次 宠物养护服务，花费40积分

    //第一步：创建一个用户类，存储用户信息 User
    //第二步：将支付方式抽象成接口，采用不同的方式实现。
    //第三步：将订单类型抽象成接口，采用不同的方式实现。
    //第四步：创建一个商品类，存储商品信息
    //第五步：应该有一个交易类，去获取用户操作的信息，然后进行存储和打印

    //定义一个唯一的交易记录链表类型
    private static List<Transaction> transactions = new ArrayList<>();

    //创建商品信息，链表存储
    private static List<Product> products = new ArrayList<>();

    //创建用户信息，链表存储
    private static List<User> users = new ArrayList<>();
    public static void main(String[] args) throws Exception {
        //创建用户信息
     users.add(new User("小明"));
     users.add(new User("小红"));
     users.add(new User("小花"));
        users.add(new User("小黑"));
        users.add(new User("小黄"));

     //创建商品信息
        products.add(new Product("摄影套餐"));
        products.add(new Product("猫粮"));
        products.add(new Product("宠物养护服务"));
        products.add(new Product("体验套餐"));

//        //创建交易
        transactions.add(new Transaction(users.get(0),products.get(0),"两套",new OrderType(),new BalancePayment(),30));
        transactions.add(new Transaction(users.get(1), products.get(1), "一袋", new ShopType(), new CashPayment(), 50));
        transactions.add(new Transaction(users.get(2), products.get(2), "一次", new PointsType(), new PointsPayment(), 40));
        transactions.add(new Transaction(users.get(3), products.get(1), "三箱", new PointsType(), new PointsPayment(), 300));
        transactions.add(new Transaction(users.get(2), products.get(3), "一次", new CouponType(), new CouponPayment(), 2));
        // 打印交易记录
        Transaction transactionPrinter = new Transaction(); // 创建一个 Transaction 实例用于打印
        transactionPrinter.printTransactionList(transactions);





    }
}